package com.crawler.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 网站监控配置实体类
 * 用于监控网站内容变化并通知用户
 */
@Data
@TableName("monitor_config")
public class MonitorConfig {

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 监控名称
     */
    private String name;

    /**
     * 监控描述
     */
    private String description;

    /**
     * 目标URL
     */
    private String targetUrl;

    /**
     * 监控频率(分钟)
     */
    private Integer frequency;

    /**
     * 监控类型
     * (CONTENT: 内容变化, KEYWORD: 关键词检测, STATUS: 状态码, ELEMENT: 元素变化)
     */
    private String type;

    /**
     * 选择器
     * 根据监控类型，可以是CSS选择器、XPath或正则表达式
     */
    private String selector;

    /**
     * 关键词
     * 当监控类型为KEYWORD时使用
     */
    private String keyword;

    /**
     * 上次内容
     * 用于与新内容比较
     */
    private String lastContent;

    /**
     * 上次检查时间
     */
    private LocalDateTime lastCheckTime;

    /**
     * 上次变化时间
     */
    private LocalDateTime lastChangeTime;

    /**
     * 通知类型
     * (NONE: 无通知, EMAIL: 邮件, SMS: 短信, WEBHOOK: 网络钩子)
     */
    private String notificationType;

    /**
     * 通知目标
     * (根据通知类型，可以是邮箱地址、手机号或URL)
     */
    private String notificationTarget;

    /**
     * 状态
     * (ACTIVE: 活跃, PAUSED: 已暂停, EXPIRED: 已过期)
     */
    private String status;

    /**
     * 检查次数
     */
    private Integer checkCount;

    /**
     * 变化次数
     */
    private Integer changeCount;

    /**
     * 创建用户ID
     */
    private Long createdBy;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
} 
